﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Runtime.Serialization;
using System.ServiceModel;
using System.ServiceModel.Web;
using System.Text;
using Chilis.CRM.TransferObjects;
using Chilis.CRM.Services;
using System.Web.Configuration;
using System.Configuration;

namespace Chilis.CRM.Communication
{
    
    public class CRMService : ICRMService
    {
        AdministracionService servicio = new AdministracionService();
        PublicacionService servicioPublicacion = new PublicacionService();

        public IList<TipoPublicacion> ListarTipoPublicacion()
        {
            var resultado = servicio.ListarTipoPublicacion();

            return resultado;
        }

        public TipoPublicacion ObtenerTipoPublicacion(int idTipoPublicacion)
        {
            var resultado = servicio.ObtenerTipoPublicacion(idTipoPublicacion);

            return resultado;
        }

        public bool RegistrarTipoPublicacion(TipoPublicacion entidad)
        {
            var resultado = servicio.RegistrarTipoPublicacion(entidad);

            return resultado;
        }

        public bool ActualizarTipoPublicacion(TipoPublicacion entidad)
        {
            var resultado = servicio.ActualizarTipoPublicacion(entidad);

            return resultado;
        }

        public bool EliminarTipoPublicacion(int idTipoPublicacion)
        {
            var resultado = servicio.EliminarTipoPublicacion(idTipoPublicacion);

            return resultado;
        }

        public IList<TipoComentario> ListarTipoComentario()
        {
            var resultado = servicio.ListarTipoComentario();

            return resultado;
        }

        public TipoComentario ObtenerTipoComentario(int idTipoComentario)
        {
            var resultado = servicio.ObtenerTipoComentario(idTipoComentario);

            return resultado;
        }

        public bool RegistrarTipoComentario(TipoComentario entidad)
        {
            var resultado = servicio.RegistrarTipoComentario(entidad);

            return resultado;
        }

        public bool ActualizarTipoComentario(TipoComentario entidad)
        {
            var resultado = servicio.ActualizarTipoComentario(entidad);

            return resultado;
        }

        public bool EliminarTipoComentario(int idTipoComentario)
        {
            var resultado = servicio.EliminarTipoComentario(idTipoComentario);

            return resultado;
        }

        public IList<ClaseComentario> ListarClaseComentario()
        {
            var resultado = servicio.ListarClaseComentario();

            return resultado;
        }

        public ClaseComentario ObtenerClaseComentario(int idClaseComentario)
        {
            var resultado = servicio.ObtenerClaseComentario(idClaseComentario);

            return resultado;
        }

        public bool RegistrarClaseComentario(ClaseComentario entidad)
        {
            var resultado = servicio.RegistrarClaseComentario(entidad);

            return resultado;
        }

        public bool ActualizarClaseComentario(ClaseComentario entidad)
        {
            var resultado = servicio.ActualizarClaseComentario(entidad);

            return resultado;
        }

        public bool EliminarClaseComentario(int idClaseComentario)
        {
            var resultado = servicio.EliminarClaseComentario(idClaseComentario);

            return resultado;
        }

        public String ListarClientesRFM()
        {
            return new ClientesService().ListarClientesRFM();
        }




        public void ModificarAccessToken(string accessToken)
        {
            var configuracion = WebConfigurationManager.OpenWebConfiguration("~");
            var facebookService = new FacebookService();

            facebookService.ModificarConfiguracion(configuracion, "FACEBOOK_ACCESS_TOKEN", accessToken);
        }


        public void RegistrarPublicacion(Publicacion publicacion)
        {
            servicioPublicacion.RegistrarPublicacion(publicacion);
        }
    }
}
